package com.cdshangpai.utils.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import com.cdshangpai.PhotoappApplication;

public class DatabaseHelper extends SQLiteOpenHelper {

    public static DatabaseHelper instance=null;
    private static String dbname="photoappdb";

    //单例返回数据库
    public static SQLiteDatabase getDb()
    {
        if(instance==null)
        {
            if(PhotoappApplication.context==null)
            {

            }
            instance=new DatabaseHelper(PhotoappApplication.context,dbname);
        }
        return instance.getWritableDatabase();
    }

    // 数据库版本号
    private static Integer Version = 2;

    //构造函数
    public DatabaseHelper(Context context, String name)
    {
        super(context,name,null,Version);
    }

    /**
     * 构造函数
     * 在SQLiteOpenHelper的子类中，必须有该构造函数
     */
    public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,
                          int version) {
        // 参数说明
        // context：上下文对象
        // name：数据库名称
        // param：一个可选的游标工厂（通常是 Null）
        // version：当前数据库的版本，值必须是整数并且是递增的状态

        // 必须通过super调用父类的构造函数
        super(context, name, factory, version);
    }

    /**
     * 复写onCreate（）
     * 调用时刻：当数据库第1次创建时调用
     * 作用：创建数据库 表 & 初始化数据
     * SQLite数据库创建支持的数据类型： 整型数据、字符串类型、日期类型、二进制
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 创建数据库1张表
        // 通过execSQL（）执行SQL语句（此处创建了1个名为person的表）
        //创建用户数据表
        String sql = "create table t_account(id integer primary key ,account varchar(64),password varchar(64),name varchar(64),area varchar(128),version varchar(64))";
        db.execSQL(sql);

        //创建关于我们数据表
        sql="create table t_aboutus(id integer primary key  ,content varchar(4096),area varchar(64),photos varchar(4096),homephotos varchar(4096),ideaphotos varchar(4096),servicephotos varchar(4096),advantagephotos varchar(4096),casephotos varchar(4096),chargesphotos varchar(4096),promotionphotos varchar(4096),letterphotos varchar(4096),processphotos varchar(4096),documentphotos varchar(4096),version varchar(64))";
        db.execSQL(sql);

        //创建案例数据表
        sql="create table t_case(id integer primary key ,`index` long,title varchar(256),content varchar(2048),titleimg varchar(256),area varchar(64),color varchar(64),style varchar(64),price varchar(128),city varchar(128),photos varchar(4096),version varchar(64),hotalid integer,hotal varchar(128))";
        db.execSQL(sql);

        //创建酒店数据表
        sql="create table t_hotal(id integer primary key ,`index` long,name varchar(256),content varchar(2048),titleimg varchar(256),city varchar(128),photos varchar(4096),version varchar(64))";
        db.execSQL(sql);

        //创建视频数据表
        sql="create table t_video(id integer primary key ,`index` long,title varchar(256),content varchar(2048),titleimg varchar(256),url varchar(1024),version varchar(64))";
        db.execSQL(sql);

        //创建表单缓存数据表
        sql="create table t_form(id integer primary key autoincrement,accountid integer,name varchar(256),phone varchar(64),remark varchar(4096),caseids varchar(4096),videoids varchar(4096))";
        db.execSQL(sql);

        sql="create table t_test(id integer primary key autoincrement,name varchar(128))";
        db.execSQL(sql);


    }

    /**
     * 复写onUpgrade（）
     * 调用时刻：当数据库升级时则自动调用（即 数据库版本 发生变化时）
     * 作用：更新数据库表结构
     * 注：创建SQLiteOpenHelper子类对象时,必须传入一个version参数，该参数 = 当前数据库版本, 若该版本高于之前版本, 就调用onUpgrade()
     */

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 参数说明：
        // db ： 数据库
        // oldVersion ： 旧版本数据库
        // newVersion ： 新版本数据库

        // 使用 SQL的ALTER语句
        /*String sql = "alter table person add sex varchar(8)";
        db.execSQL(sql);*/


    }
}